/**
 * @file Q1Interface.h
 * @brief 网格属性插值问题的接口定义
 */
#pragma once
#include <string>

namespace Q1 {

/**
 * @brief 网格属性插值接口类
 * 
 * 提供网格间属性插值功能：
 * 1. 从源网格到目标网格的属性插值
 * 2. 支持杨氏模量和泊松比的插值
 * 3. 自动选择最优插值算法
 */
class GridInterpolator {
public:
    /**
     * @brief 执行网格属性插值
     * @param grid_a_file 源网格文件路径
     * @param grid_b_file 目标网格文件路径
     * @param props_a_file 源网格属性文件路径
     * @param output_file 输出结果文件路径
     * @param k_nearest K近邻搜索的邻居数量(默认为8)
     * @throw std::runtime_error 当文件操作或插值计算失败时抛出异常
     * 
     * 执行流程:
     * 1. 读取源网格和目标网格数据
     * 2. 读取源网格属性数据
     * 3. 构建KD树进行空间搜索
     * 4. 执行并行化的插值计算
     * 5. 输出插值结果到文件
     */
    static void interpolate(const std::string& grid_a_file,
                          const std::string& grid_b_file,
                          const std::string& props_a_file,
                          const std::string& output_file,
                          size_t k_nearest = 8);
};

} // namespace Q1 